package com.bw.controller;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.bw.service.GmallService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

@RestController
public class GmallController {
//    注入业务层
    @Autowired
    GmallService gmallService;

    @RequestMapping("/total")
    public Object total(String newDate){
        //返回大屏所需要的数据
//        来自于谁？？ 数据库中的数据  gmallService
//        1.拿到数据库中的数据
        List<Map> total = gmallService.total(newDate);
//        2.返回大屏所需要的数据
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("status",0);
        jsonObject.put("msg","");
//        data种的值 来自于数据库中 List<Map>  get(0).get(key sum(total_amount))
        jsonObject.put("data",total.get(0).get("sum(total_amount)"));
        return jsonObject;
    }

    @RequestMapping("/baseTotal")
    public Object baseTotal(String newDate){
//        从外到里 list 来自数据库中的值  name  total
//        1.拿到数据库中的数据
        List<Map> list = gmallService.baseTotal(newDate);
//       2.返回大屏所需要的数据
//       第一层  {}
        JSONObject jsonObject = new JSONObject();
//       第二层  需要status  msg  data
        jsonObject.put("status",0);
        jsonObject.put("msg","");
//        第三层  需要{}
        JSONObject data = new JSONObject();
//        第四层 需要[]
        JSONArray mapArray = new JSONArray();
//        list  -->18条数据  List<Map> 遍历
        for (Map map : list) {
//            第五层 需要{}
            JSONObject mapObject = new JSONObject();
//            第六层  需要  name    value
            mapObject.put("name",map.get("name"));
            mapObject.put("value",map.get("total"));
//   mapArray是数组 需要 {}
            mapArray.add(mapObject);
        }
        data.put("mapData",mapArray);
        jsonObject.put("data",data);

        return jsonObject;
    }

//    如何返回饼图所需要的数据
    @RequestMapping("/bingTotal")
    public Object  bingTotal(String newDate){
//        1.拿到数据的数据list --List<Map>
        List<Map> list = gmallService.bingTotal(newDate);
//        2.返回大屏所需要的数据
//        第一层  需要{}
        JSONObject jsonObject = new JSONObject();
//        第二层  需要  status  msg   data
        jsonObject.put("status",0);
        jsonObject.put("msg","");
//        第三层  需要[]
        JSONArray jsonArray = new JSONArray();
//        第四层  需要多个{}  --遍历
        for (Map map : list) {
            JSONObject dataObject = new JSONObject();
            dataObject.put("name",map.get("name"));
            dataObject.put("value",map.get("zb"));
//         多个对象 需要放在数组中
            jsonArray.add(dataObject);
        }
        jsonObject.put("data",jsonArray);
        return jsonObject;
    }
}
